package user;

import book.Book;
import book.Library;
import utils.ScannerSingleton;

import java.time.LocalDate;
import java.util.Scanner;

public class AdminUser extends User{
    private Scanner scanner = ScannerSingleton.getInstance();
    private Library library = Library.getInstance();
    public AdminUser(String name, int userId){
        super(name, userId, "管理员");
    }

    @Override
    public int display() {
        System.out.println("管理员 " + getName() + " 的操作菜单:");
        System.out.println("1. 查找图书");
        System.out.println("2. 打印所有图书");
        System.out.println("3. 退出系统");
        System.out.println("4. 上架图书");
        System.out.println("5. 修改图书");
        System.out.println("6. 下架图书");
        System.out.println("7. 统计借阅次数");
        System.out.println("8. 查看最受欢迎的前K本书");
        System.out.println("9. 查看库存状态");
        System.out.println("10. 检查超过一年未下架的图书");
        System.out.println("请选择你的操作:");
        return scanner.nextInt();
    }

    // 其他操作方法

    // 上架图书
    public void addBook(){
        System.out.println("Admin类addBook方法执行了");
        scanner.nextLine();

        System.out.println("请输入书名:");
        String title = scanner.nextLine();

        System.out.println("请输入作者:");
        String author = scanner.nextLine();

        System.out.println("请输入类别:");
        String category = scanner.nextLine();

        System.out.println("请输入出版年份:");
        int year = scanner.nextInt();

        LocalDate shelfData = LocalDate.now();
        Book newBook = new Book(title, author, category, year, shelfData);

        library.addBook(newBook);
    }

    // 修改图书
    public void updateBook(){
        // 1. 先展示一下目前的所有图书
        library.displayBooks();
        System.out.println("请输入要修改的图书的id: ");
        int bookId = scanner.nextInt();
        // 吞掉换行符
        scanner.nextLine();
        // 获取对应的图书
        Book book = library.searchById(bookId);

        if(book == null){
            System.out.println("没有ID为: " + bookId + " 的书籍!");
            return;
        }

        System.out.println("当前书名: " + book.getTitle());
        System.out.println("请输入新的书名: ");
        String newTitle = scanner.nextLine(); // 输入新的书名
        System.out.println("当前作者: " + book.getAuthor());
        System.out.println("请输入新的作者: ");
        String newAuthor = scanner.nextLine();
        System.out.println("当前类别: " + book.getCategory());
        System.out.println("请输入新的类别: ");
        String newCategory  = scanner.nextLine();

        // 更新对应书籍的信息
        book.setTitle(newTitle);
        book.setAuthor(newAuthor);
        book.setCategory(newCategory);

        library.updateBook(book);
    }

    // 删除书籍
    public void removeBook(){
        // 1. 展示一下所有的图书
        library.displayBooks();
        System.out.println("请输入要删除达到图书的ID: ");
        int bookId = scanner.nextInt();
        scanner.nextLine();

        // 记录一下删除的图书对象
        Book removeBook = library.searchById(bookId);

        // 开始删除
        library.removeBook(bookId);

        System.out.println("图书: "+removeBook.getTitle()+ " 已经被删除!");
    }

    // 统计每本书的借阅次数
    public void borrowCount(){
        library.borrowCount();
    }

    // 查询最受欢迎的前n本书
    public void generateBook(){
        System.out.println("请输入你要查看最受欢迎的前k本书, 注意k值不能超过" + library.bookCount);
        int k = scanner.nextInt();
        if(k <= 0 || k > library.bookCount){
            System.out.println("没有最受欢迎的前"+ k + "本书!");
            return;
        }
        library.generateBook(k);
    }

    // 查看库存状态
    public void checkInventoryStatus(){
        library.checkInventoryStatus();
    }

    // 并移除上架超过一年的图书
    public void checkAndRemoveOldBooks(){
        library.checkAndRemoveOldBooks();
    }


}
